package com.bookmall.common.utils;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bookmall.common.entity.MyPageEntity;

import java.util.List;

/**
 * @Description:
 * @Author 胡菜鸡
 * @Create 2022-02-18-18:22
 */
public class MyQuery<T> {

    /**
     * 获取分页 page
     * @author 胡菜鸡
     * @date 2022/2/18 18:32
     * @param entity 实体类（需继承 MyPageEntity）
     * @return
     */
    public IPage<T> getPage(MyPageEntity entity) {
        return this.getPage(entity, null, true);
    }

    /**
     * 获取分页 page
     * @author 胡菜鸡
     * @date 2022/2/18 18:32
     * @param entity 实体类（需继承 MyPageEntity）
     * @param defaultOrderField 排序字段
     * @param isAsc 排序方式，true正序（默认），false倒序
     * @return
     */
    public IPage<T> getPage(MyPageEntity entity, String defaultOrderField, boolean isAsc){
        //分页参数
        long pageNum = 1;
        long limit = 10;

        if(entity.getPageNum() != null){
            pageNum = entity.getPageNum();
        }
        if(entity.getPageSize() != null){
            limit = entity.getPageSize();
        }

        //分页对象
        Page<T> page = new Page<>(pageNum, limit);

        //没有排序字段，则不排序
        if(StringUtils.isBlank(defaultOrderField)){
            return page;
        }

        //默认排序
        if(isAsc) {
            page.addOrder(OrderItem.asc(defaultOrderField));
        } else {
            page.addOrder(OrderItem.desc(defaultOrderField));
        }

        return page;

    }

}
